import torch
import numpy as np

# 加载已经保存的 Torch Script 模型
try:
    loaded_model = torch.jit.load('../output_model/sinx_model_scripted.pt')
    loaded_model.eval()  # 设置为评估模式
    print("Torch Script模型加载成功！")
except Exception as e:
    print(f"加载模型失败: {e}")
    exit()

# 准备测试数据
# 创建一个张量作为输入
# 例如，我们想预测 sin(PI/2) 和 sin(PI/4)
test_x = torch.tensor([[np.pi/2], [np.pi/4]], dtype=torch.float32)

# 使用模型进行预测
with torch.no_grad(): # 在评估时，我们不需要计算梯度
    predictions = loaded_model(test_x)

# 打印结果
for i in range(test_x.shape[0]):
    input_val = test_x[i].item()
    predicted_val = predictions[i].item()
    actual_val = np.sin(input_val)
    print(f"输入: {input_val:.4f} ({input_val/np.pi:.2f}*PI)")
    print(f"  -> 模型预测值: {predicted_val:.4f}")
    print(f"  -> 真实sin值: {actual_val:.4f}\n")